1. Field of the Invention
The present invention pertains generally to a network printing subsystem and particularly to a partial print provider for use in association with a commercial print spooler. More particularly, the present invention relates to a Dynamically Linked Library (DLL) that translates between printer and job properties under a commercial spooler to and from printer and job properties under a proprietary spooler.
2. Discussion of the Art
In a network printing system, individual client workstations may communicate with and issue print jobs to a network print server. The server in turn then processes these jobs and transmits them to a physical printer, known as a print device. Although the exact processes that occur in a network print system vary depending on the manufacturer of the print server software, certain processes are common to most of the available printing systems. A description of the printing process on a network, as exemplified in a Microsoft Windows NT environment, follows below.
Initially, an administrator creates a printer on a server and shares it with client workstations connected on the network. This is done by setting configuration options such as the printer's name, its driver and a port it prints to and is most easily accomplished using the Print Manager feature of Windows NT. A network client workstation then creates a print job and submits it. When using remote printing over a network, a router in the client's local workstation directs the print job to a Remote Print Provider in the workstation. This Remote Print Provider communicates with a router in the network print server and passes the print job to the network server.
The Windows NT print server may use one of several print server services to receive the print job depending on the operating system used by the client that is submitting the print job. The service will then submit the job to a server's spooler. The service does this by making WIN32 calls to the spooler API (“Application Programming Interface”). The spooler is the generic term for software components that schedule, distribute and control print jobs. The NT spooler acts like a single service but has several components. These components include a print spooler router and a local print provider. The print spooler router will manage the routing of the print job as it is passed to and returned from the local server spooler components. After receiving the print job from the server service, the print job will be assigned a data type and sent to the spooler router.
When sent to the spooler, the router will initially send the job to a local print provider. The local print provider is responsible for spooling the print job to disk and passing control to a print processor for modification if necessary. The print processor performs the appropriate modifications and then returns the job to the print provider. Both the print provider and the print processor are part of the NT spooler. The job is then sent to a port monitor.
The port monitor then communicates with a local port's driver to deliver the job to a print device. The print device produces a hard copy output by interpreting the print job by means of built in interpreter software.
Traditionally, network printing from applications has been a one-directional exchange of information. The application program generates a printer dependant stream of data and then passes this stream to the print server and on to the print device. Print status back to a client submitting a print job is no longer available once the port monitor has accepted the print job. In addition, a client had no control in stopping, continuing or modifying a submitted print job.
In an effort to increase user control of print jobs, some entities choose to use their own proprietary spooler to manage print jobs on their network. However, because it is difficult to interface the two, the NT spooler and the proprietary spooler cannot normally be used together. Consequently, if you wanted your print server application to work with the NT Operating System, you would have to replace your application's print spooler with the NT print spooler and completely rely on its capabilities to spool, queue, and manage print jobs. An even more costly alternative is to replace all NT spooler and print services with custom code.
Thus, it has been recognized that it would be advantageous to have a component that would provide a gateway between a commercial spooler (such as the NT print spooler) and a proprietary spooler that would allow processing of a print job by the proprietary spooler while leveraging off of the commercial spooler's existing print services and network technologies Attempts have been made in this field using a language and port monitor approach, in which proprietary code is simply appended to the end of the Windows NT print processing chain. This is a well-documented approach and is useful in that standard print processors will work without modification. However, this approach is problematic in that error processing is difficult and, in the case where applications require double spooling, it is difficult to keep two printer spool files synchronized.
Thus, a need exists for a way to interface a third party's proprietary spooler with a commercial print spooler in which there is no need for port and language monitors.